package com.wx.mall.order.service;

import com.wx.mall.common.vo.order.OrderRepVo;
import com.wx.mall.order.entity.Order;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wx.mall.order.vo.OrderListReqVo;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 订单 服务类
 * </p>
 *
 * @author j
 * @since 2020-04-08
 */
public interface IOrderService extends IService<Order> {


    /**
     * 查询未发货的订单列表
     * @param
     * @return
     */
    List<Order> selectByStatus();

    /**
     * 查询订单列表分页
     * @param
     * @return
     */
    List<Order> find(Integer pageNum, Integer pageSize);

    /**
     * 查询订单列表并排序
     * @param sort 0为创建时间 1为支付方式 2订单来源  3订单状态
     * @return
     */
    List<Order> pageOrder( Integer pageNum,
              Integer pageSize,int sort);


    /**
     * 查询已经发货的订单列表并排序
     * @param sort 0为创建时间 1为支付方式 2订单来源  3订单状态
     * @return
     */
    List<Order> pageOrderTwo( Integer pageNum,
                           Integer pageSize,int sort);


    /**
     * 查询订单列表并筛选
     * @param orderStatus 0为待付款 1为待发货 2为已发货 3为已完成  4为已关闭
     * @return
     */
    List<Order>  pageSelect(  Integer pageNum,
                Integer pageSize,int sort,
               Integer orderStatus, String transactionId,
               String receiverMobile, Date createTime,Integer sourceType);
    /**
     * 查询订单列表并筛选（已经发货的列表）
     * @param
     * @return
     */
  List<Order>  pageSelectTwo(Integer pageNum,
                  Integer pageSize,int sort,String transactionId,
                  String receiverMobile,Date createTime,Integer sourceType);

    /**
     * 修改订单关闭
     * @param vo
     * @return
     */
    int updateListClose(OrderRepVo vo);

    /**
     * 批量修改订单为已完成
     * @param vo
     * @return
     */
  int updateListSuccess(OrderRepVo vo);


    /**
     * 修改订单  软删 0删1现
     * @param vo
     * @return
     */
    int deleteList(OrderRepVo vo);

    /**
     * 查询记录数
     * @param orderStatus
     * @return
     */
    int getAllObjs(Integer orderStatus);

    /**
     * 批量修改
     * @param vo
     * @return
     */
    int updateOne(OrderListReqVo vo);
}
